package com.sc.nft.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.dto.AdminUserWorkRoomExportDTO;
import com.sc.nft.dto.UserPerformanceDTO;
import com.sc.nft.entity.UserWorkRoom;
import com.sc.nft.entity.UserWorkRoomDown;
import com.sc.nft.entity.dto.AddWorkRoomDTO;
import com.sc.nft.entity.dto.UserWorkRoomPageDTO;
import com.sc.nft.entity.vo.UserWorkRoomExcludeWhiteListRankVO;
import com.sc.nft.entity.vo.UserWorkRoomPageVO;
import com.sc.nft.entity.vo.WorkRoomExportVO;
import com.sc.nft.enums.IncomeTypeEnum;

import java.math.BigDecimal;
import java.util.List;

/**
 * (UserWorkRoom)表服务接口
 *
 * @author wwc
 * @since 2023-07-18 17:25:08
 */
public interface UserWorkRoomService {

    /**
     * 取消社区网点
     *
     * @param id
     */
    Boolean cancelCommunityOutlets(Long id);

    /**
     * 添加用户成为社区网点
     *
     * @param addWorkRoomDTO
     */
    void addWorkRoom(AddWorkRoomDTO addWorkRoomDTO);

    /**
     * 分页
     *
     * @param userWorkRoomPageDTO
     * @return
     */
    Page<UserWorkRoomPageVO> page(UserWorkRoomPageDTO userWorkRoomPageDTO);


    /**
     * 导出社区工作网点
     * @return
     */
    List<WorkRoomExportVO> workRoomExport();

    /**
     *  社区网点数据导出
     */
    List<AdminUserWorkRoomExportDTO> userWorkRoomExport();

    List<AdminUserWorkRoomExportDTO> getDataList();
    /**
     * 社区网点升级
     * @return
     */
    List<UserWorkRoomExcludeWhiteListRankVO> getUserWorkRoomExcludeWhiteListRank();


    /**
     * 获取所有社区网点
     * @return
     */
    Integer getCount();

    /**
     * 降级
     * @param userWorkRoom
     * @param assessId
     */
    void downgrade(UserWorkRoom userWorkRoom,Long assessId);

    /**
     * 预降级
     * @param userWorkRoom
     */
    void preDowngrade(UserWorkRoom userWorkRoom);

    /**
     * 升级
     * @param userWorkRoomDown
     * @param assessId
     */
    void upgrade(UserWorkRoomExcludeWhiteListRankVO userWorkRoomDown, Long assessId);
    UserWorkRoom getByUserId(Long userId);
}
